package com.gxa.hualian.service.impl;

import com.gxa.hualian.mapper.ManagerMapper;
import com.gxa.hualian.pojo.Manager;
import com.gxa.hualian.pojo.User;
import com.gxa.hualian.service.ManagerService;
import jdk.nashorn.internal.ir.CallNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

/**
 *  @Transactional(rollbackFor = {Throwable.class})
 *  可以声明在方法中:只对当前方法生效
 *  也可以声明在类中:对当前类中的所有方法都生效
 * @author lijunlin
 * @date 2022/5/20
 */
@Transactional(rollbackFor = {Throwable.class})
@Service
public class ManagerServiceImpl implements ManagerService {
    @Autowired
    ManagerMapper managerMapper = null;
    @Override
    public List<Map<String,Object>> selectAllByPage(Integer page, Integer size) {
        //在业务层 把页码转换为sql语句真正使用的偏移量offset
       return  managerMapper.selectByPage((page - 1) * size, size);


    }

    @Override
    public Manager selectById(Integer id) {
        return managerMapper.selectById(id);


    }

    /**
     * rollbackFor:回滚的列表
     *   事务中,无论什么异常都应该选择回滚
     *   使用Throwable共同父接口
     *   noRollbackFor:不会回滚的异常列表
     */

    @Override
    public void deleteById(Integer id) {
        //1.准备ManagerMapper:依赖注入
        //2.mapper实现方法的执行
        //SqlSession(mybaits)也在管控事务;
        //3.预期:当代码中任意位置发生异常,执行成功的操作也被回滚了

        managerMapper.delectById(id);
        int i = 1/0;
    }

}
